package com.rykj.energy.task.manage.schedule;

import com.rykj.energy.task.manage.vo.TriggerDto;
import org.quartz.JobDataMap;
import org.quartz.SchedulerException;
import org.springframework.scheduling.quartz.QuartzJobBean;

import java.util.List;

public interface IQuartzService {


    /**
     * 新增一个即时生效的按秒间隔执行的频率任务
     * @param jobClass 任务执行实例
     * @param jName 任务名称
     * @param jGroup 任务组
     * @param seconds 间隔时长(秒)
     * @param jobDataMap 任务参数
     */
    void addJobSeconds(Class<? extends QuartzJobBean> jobClass, String jName, String jGroup, int seconds, JobDataMap jobDataMap) throws Exception;

    /**
     * 新增一个即时生效的任务
     * @param jobClass 任务执行实例
     * @param jName 任务名称
     * @param jGroup 任务组
     * @param cron 任务执行时间Cron
     * @param jobDataMap 任务参数
     */
    void addJobCron(Class<? extends QuartzJobBean> jobClass, String jName, String jGroup, String cron, JobDataMap jobDataMap) throws Exception;
    /**
     * 新增具有时间范围的按秒间隔执行的频率任务
     * @param jName 任务名称
     * @param jGroup 任务组
     * @param seconds 间隔时长(秒)
     * @param jobDataMap 任务参数
     */
    void addTermSecondsJob(Class<? extends QuartzJobBean> jobClass, String jName, String jGroup, int seconds, TriggerDto triggerVos, JobDataMap jobDataMap) throws Exception;

    /**
     * 暂停定时任务
     * @param jName 任务名
     * @param jGroup 任务组
     */
    void pauseJob(String jName, String jGroup) throws SchedulerException;

    /**
     * 继续定时任务
     * @param jName 任务名
     * @param jGroup 任务组
     */
    void resumeJob(String jName, String jGroup) throws SchedulerException;

    /**
     * 删除定时任务
     * @param jName 任务名
     * @param jGroup 任务组
     */
    void deleteJob(String jName, String jGroup) throws SchedulerException;
}
